package br.com.smanager.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.smanager.dao.common.DataAccessObject;
import br.com.smanager.vo.PessoaVO;
import br.com.smanager.vo.common.ValueObject;

public class PessoaDAO extends DataAccessObject {

	private PessoaVO pessoaVO = null;
	private boolean result = false;

	@Override
	public boolean insert(ValueObject valueObject) {
		pessoaVO = (PessoaVO) valueObject;
		result = true;

		Session session = HibernateUtil.getSessionFactory().openSession();

		try {
			session.beginTransaction();
			
			Query qry = session.createSQLQuery("INSERT INTO pessoa(id_pessoa, nome, nome_fantasia, cpf_cnpj, rg_ie, ende_endereco, ende_numero, ende_complemento, ende_cep, ende_bairro, ende_cidade, ende_estado, ende_pais, fone_ddd, fone_numero, fone_ramal, fone_contato, email_endereco) "+
							                   "VALUES (nextval('sq_pessoa'), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
			qry.setString(0, pessoaVO.getNome());
			qry.setString(1, pessoaVO.getNomeFantasia());
			qry.setString(2, pessoaVO.getPessoaComplento().getCpfCnpj());
			qry.setString(3, pessoaVO.getPessoaComplento().getRgIe());
			qry.setString(4, pessoaVO.getPessoaComplento().getLogradouro());
			qry.setString(5, pessoaVO.getPessoaComplento().getNumeroLogradouro());
			qry.setString(6, pessoaVO.getPessoaComplento().getComplemento());
			qry.setString(7, pessoaVO.getPessoaComplento().getBairro());
			qry.setString(8, pessoaVO.getPessoaComplento().getCep());
			qry.setString(9, pessoaVO.getPessoaComplento().getCidade());
			qry.setString(10, pessoaVO.getPessoaComplento().getEstado());
			qry.setString(11, pessoaVO.getPessoaComplento().getPais());
			qry.setString(12, pessoaVO.getPessoaComplento().getDdd());
			qry.setString(13, pessoaVO.getPessoaComplento().getTelefone());
			qry.setString(14, pessoaVO.getPessoaComplento().getRamal());
			qry.setString(15, pessoaVO.getPessoaComplento().getContato());
			qry.setString(16, pessoaVO.getPessoaComplento().getEmail());
			qry.executeUpdate();

			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			result = false;
		}

		pessoaVO = null;
		return result;
	}

	@Override
	public boolean update(ValueObject valueObject) {
		pessoaVO = (PessoaVO) valueObject;
		result = true;

		Session session = HibernateUtil.getSessionFactory().openSession();

		try {
			session.beginTransaction();

			Query qry = session.createSQLQuery("");
			qry.executeUpdate();

			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			result = false;
		}

		pessoaVO = null;
		return result;
	}

	@Override
	public boolean delete(ValueObject valueObject) {
		pessoaVO = (PessoaVO) valueObject;
		result = true;

		Session session = HibernateUtil.getSessionFactory().openSession();

		try {
			session.beginTransaction();

			Query qry = session.createSQLQuery("");
			qry.executeUpdate();

			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			result = false;
		}

		pessoaVO = null;
		return result;
	}

	@Override
	public boolean delete(int id) {
		result = true;

		Session session = HibernateUtil.getSessionFactory().openSession();

		try {
			session.beginTransaction();

			Query qry = session.createSQLQuery("");
			qry.executeUpdate();

			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			result = false;
		}

		return result;
	}

	@Override
	public ValueObject returnById(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<ValueObject> returnAll() {
		// TODO Auto-generated method stub
		return null;
	}

}
